package com.atguigu.tingshu.user.strategy;

import com.atguigu.tingshu.common.execption.GuiguException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Map;

@Component
public class StrategyFactory {

    // 1001-专辑 1002-声音 1003-vip会员
    // <bean id="albumItemTypeStrategyImpl"
        //    class="com.atguigu.tingshu.user.AlbumItemTypeStrategyImpl"/>

    // Map<key,value>: key对象id值  value：对象

//     * 将IOC容器中ItemTypeStrategy接口下所有实现类对象注入到Map中
//     * Map中Key：Bean对象ID
//     * Map中Value：实现类对象
//     * {"1001":购买类型为专辑策略类对象}
//     * {"1002":购买类型为声音策略类对象}
//     * {"1003":购买类型为vip策略类对象}
    @Autowired
    private Map<String,ItemTypeStrategy> itemTypeStrategy;

    //根据不同类型  返回不同对象的方法
    public ItemTypeStrategy getStrategy(String itemType) {

        if (itemTypeStrategy.containsKey(itemType)) {
            return itemTypeStrategy.get(itemType);
        }
        throw new GuiguException(500, "该策略" + itemType + "实现类不存在");
    }
}
